package com.example.juc.kkb.synchronizedandlock;

/**
 * 备注：多线程之间按顺序调⽤，实现A->B->C
 * 三个线程启动，要求如下：
 * A打印5次，B打印10次，C打印15次
 * 接着
 * A打印5次，B打印10次，C打印15次
 * 来10轮
 * 1.⾼内聚低耦合前提下，线程操作资源类
 * 2.判断/⼲活/通知
 * 3.多线程交互中，防⽌虚假唤醒(判断只能⽤while，不能⽤if)
 * 4.标志位
 */
public class ConditionDemo {
    public static void main(String[] args) {

        ShareData shareData = new ShareData();

        new Thread(() -> {
            for (int i = 1; i <= 10; i++) {
                shareData.printC1();
            }
        }, "A").start();

        new Thread(() -> {
            for (int i = 1; i <= 10; i++) {
                shareData.printC2();
            }

        }, "B").start();

        new Thread(() -> {
            for (int i = 1; i <= 10; i++) {
                shareData.printC3();
            }
        }, "C").start();
    }
}